<html>
    <head>
        <title>将Swagger与OAUTH一起使用</title>
    </head>
    <body>
        <script>

             /*
                        三、将Swagger与OAUTH一起使用

                                  对于非MVC/分层应用程序，我们需要使用OAUTH配置Swagger来处理授权。
                                  
                                  （ABP默认使用OpenIddice。要获取有关OpenIddice的更多信息，请检查此留档。）

                                  为此，我们需要使用AddAbpSwaggerGenWithOAuth扩展来配置带有OAuth颁发者的Swagger，
                                  
                                  并在模块的ConfigureServices方法中配置范围：

                                                 public override void ConfigureServices(ServiceConfigurationContext context)
                                                {
                                                    var services = contex.Services;

                                                    //... other configarations.

                                                    services.AddAbpSwaggerGenWithOAuth(
                                                        "https://localhost:44341",             // authority issuer
                                                        new Dictionary<string, string>         //
                                                        {                                      // scopes
                                                            {"Test", "Test API"}               //
                                                        },                                     //
                                                        options =>
                                                        {
                                                            options.SwaggerDoc("v1", new OpenApiInfo { Title = "Test API", Version = "v1" });
                                                            options.DocInclusionPredicate((docName, description) => true);
                                                            options.CustomSchemaIds(type => type.FullName);
                                                        }
                                                    );
                                                }  
                                                    
                                 然后我们可以通过调用模块的OnApplicationInitialization方法中的UseAbpSwaggerUI方法来使用Swagger UI：

                                        public override void OnApplicationInitialization(ApplicationInitializationContext context)
                                        {
                                            var app = context.GetApplicationBuilder();

                                            //... other configurations.

                                            app.UseAbpSwaggerUI(options =>
                                            {
                                                options.SwaggerEndpoint("/swagger/v1/swagger.json", "Test API");

                                                var configuration = context.ServiceProvider.GetRequiredService<IConfiguration>();
                                                options.OAuthClientId("Test_Swagger"); // clientId
                                                options.OAuthClientSecret("1q2w3e*");  // clientSecret
                                            });
                                            
                                            //... other configurations.
                                        }


                                不要忘记设置OAuthClientId和OAuthClientSecret。
                   */
        </script>
    </body>
</html>